﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using CeA.Reports.Atendimento.Web.Helpers;
using CeA.Reports.Atendimento.Web.WebControls;
using CeA.Reports.Atendimento.DataAccess.DTO;
using CeA.Reports.Atendimento.DataAccess.Criteria;
using Qtech.Reports.Atendimento.Services;
using System.Collections.Generic;

namespace CeA.Reports.Atendimento.Web.admin {
    public partial class especialistacadastro : System.Web.UI.Page {
        protected void Page_Init(object sender, EventArgs e)                                {
            cmdPesquisarUsuario.Click += new EventHandler(cmdPesquisarUsuario_Click);
            cmdSalvar.Click += new EventHandler(cmdSalvar_Click);
            cmdVoltar.Click += new EventHandler(cmdVoltar_Click);
            PesquisaUsuario.Confirmar += new PesquisaUsuario.ConfirmarEventHandler(PesquisaUsuario_Confirmar);
        }


        protected void Page_Load(object sender, EventArgs e)                                {
            if (PreviousPage != null) {
                this.CodigoEspecialista = PreviousPage.CodigoEspecialista;
                carregarDados();
            }
        }
       
        
        protected void cmdPesquisarUsuario_Click(object sender, EventArgs e)                {
            PesquisaUsuario.pop();
        }


        public void PesquisaUsuario_Confirmar(object sender, PesquisaUsuarioEventArgs e)    {
            hdnUsuarioId.Value = Convert.ToString(e.Id);
            txtUsuario.Text = e.Nome;
        }


        protected void cmdVoltar_Click(object sender, EventArgs e)                          {
            NavigationHelper.RefererRedirect("/admin/especialista.aspx");
        }


        protected void cmdSalvar_Click(object sender, EventArgs e)                          {
            if (this.CodigoEspecialista > 0)
                atualizarEspecialista();
            else
                inserirEspecialista();
        }


        private void carregarDados()                                                        {
            int especialistaId = this.CodigoEspecialista;
            if (especialistaId > 0) {
                EspecialistaCriteria filter = new EspecialistaCriteria();
                filter.addEspecialista(especialistaId);

                List<EspecialistaDTO> ds = CadastroFacade.FindEspecialista(filter);

                EspecialistaDTO dto = ds[0];

                txtNome.Text = dto.Nome;
                txtSigla.Text = dto.Sigla;
                txtUsuario.Text = dto.NomeUsuario;
                hdnUsuarioId.Value = Convert.ToString(dto.IdUsuario);
                this.CodigoEspecialista = dto.Id;
            }
        }


        private void inserirEspecialista()                                                  {
            EspecialistaDTO dto = new EspecialistaDTO();
            
            dto.Sigla = txtSigla.Text;
            dto.Nome = txtNome.Text;
            dto.IdUsuario = Convert.ToInt32(hdnUsuarioId.Value);
            dto.NomeUsuario = txtUsuario.Text;
            
            dto = Qtech.Reports.Atendimento.Services.CadastroFacade.SaveEspecilista(dto);
            this.CodigoEspecialista = dto.Id;

            MessageBox.pop("Registro inserido com sucesso!");
        }


        private void atualizarEspecialista()                                                {
            EspecialistaDTO dto = new EspecialistaDTO();
            
            dto.Id = this.CodigoEspecialista;
            dto.IdUsuario = Convert.ToInt32(hdnUsuarioId.Value);
            dto.Sigla = txtSigla.Text;
            dto.Nome = txtNome.Text;
            dto.NomeUsuario = txtUsuario.Text;

            Qtech.Reports.Atendimento.Services.CadastroFacade.UpdateEspecialista(dto);

            MessageBox.pop("Registro atualizado com sucesso!");
        }


        public int CodigoEspecialista                                                       {
            get {
                if (ViewState["m_codigoEspecialista"] != null)
                    return Convert.ToInt32(ViewState["m_codigoEspecialista"]);
                return 0;
            }
            set {
                ViewState.Add("m_codigoEspecialista", value);
            }
        }
    }
}
